// const { app, BrowserWindow } = require('electron')
// const path = require("path")
import {app, BrowserWindow, screen, dialog} from 'electron'
import { join } from 'path'
const isPackaged = app.isPackaged;
let mainWindow;
const createWindow = () => {
    mainWindow = new BrowserWindow({
        // 默认窗口标题，如果由loadURL()加载的HTML文件中含有标签<title>，此属性将被忽略。
        title: "linter",
        // width: 1200,
        // height: 800,
        // 设置窗口尺寸为屏幕工作区尺寸
        // width: screen.getPrimaryDisplay().workAreaSize.width,
        // height: screen.getPrimaryDisplay().workAreaSize.height,
        // 设置最小尺寸
        minWidth: 900,
        minHeight: 670,
        // 窗口图标。 在 Windows 上推荐使用 ICO 图标来获得最佳的视觉效果, 默认使用可执行文件的图标.
        // 在根目录中新建 build 文件夹存放图标等文件
        // icon: path.resolve(__dirname, "../build/icon.ico"),
    })

    // 使用 loadFile 加载 electron/index.html 文件
    // 使用 loadURL 加载 http://localhost:3004 ，也就是我们刚才创建的 Vue 项目地址
    // 3004 改为你 Vue 项目的端口号
    mainWindow.loadURL("http://localhost:5173/");
    // 如果使用了 nginx 代理，url 改为代理地址
    // mainWindow.loadURL('http://localhost:5173/')
    // mainWindow.loadURL("file://${join(__dirname, \"../dist/index.html\")}")
    // mainWindow.loadURL("E:\\Users\\sideline\\linter\\dist\\index.html")
    // mainWindow.loadFile(join(__dirname, '../dist/index.html'))

    // 在窗口要关闭的时候触发
    mainWindow.on("close", (e) => {
        e.preventDefault();
        dialog
            .showMessageBox(mainWindow, {
                type: "info",
                title: "退出提示",
                defaultId: 0,
                cancelId: 1,
                message: "确定要退出吗？",
                buttons: ["退出", "取消"],
            })
            .then((res) => {
                if (res.response === 0) {
                    // e.preventDefault();
                    // mainWindow.destroy();
                    app.exit(0);
                }
            });
    })
}

// 在应用准备就绪时调用函数
// app.whenReady().then(() => {
//     createWindow()
//     app.on("activate", () => {
//         // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
//         // 打开的窗口，那么程序会重新创建一个窗口。
//         if (BrowserWindow.getAllWindows().length === 0) createWindow();
//     });
// })
// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此，通常对程序和它们在任务栏上的图标来说，应当保持活跃状态，直到用户使用 Cmd + Q 退出。
app.on("window-all-closed", () => {
    if (process.platform !== "darwin") app.quit();
});
// 证书的链接验证失败时，触发该事件
app.on(
    "certificate-error",
    function (event, webContents, url, error, certificate, callback) {
        event.preventDefault();
        callback(true);
    }
);

// 限制只能打开一个窗口
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
    app.quit();
} else {
    app.on("second-instance", () => {
        // 当运行第二个实例时,将会聚焦到 mainWindow 这个窗口
        if (mainWindow) {
            if (mainWindow.isMinimized()) mainWindow.restore();
            mainWindow.focus();
            // mainWindow.show();
        }
    });
    // 在应用准备就绪时调用函数
    app.whenReady().then(() => {
        createWindow()
        app.on("activate", () => {
            // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
            // 打开的窗口，那么程序会重新创建一个窗口。
            if (BrowserWindow.getAllWindows().length === 0) createWindow();
        });
    });
}


